import type { Module, ActionContext } from 'vuex'
import type { AxiosResponse } from 'axios'
// import type { ParamStateType } from './typings'
import {
  getSystemParamList,
  addSystemParamInfo,
  updateSystemParamInfo,
  deleteSystemParamInfo
} from '~/api/system/systemParam'

const systemParam: Module<Record<string, unknown>, Record<string, unknown>> = {
  namespaced: true,
  state: {},
  getters: {},
  actions: {
    // 获取列表信息
    GetSystemParamList<S, T>(_: ActionContext<S, T>, params: T) {
      return new Promise((resolve, reject) => {
        getSystemParamList<T>(params)
          .then((res: AxiosResponse) => {
            resolve(res.data)
          })
          .catch((err: AxiosResponse) => {
            reject(err)
          })
      })
    },
    // 添加参数
    AddSystemParamInfo<S, T>(_: ActionContext<S, T>, params: T) {
      return new Promise((resolve, reject) => {
        addSystemParamInfo<T>(params)
          .then((res: AxiosResponse) => {
            resolve(res.data)
          })
          .catch((err: AxiosResponse) => {
            reject(err)
          })
      })
    },
    // 修改参数
    UpdateSystemParamInfo<S, T>(_: ActionContext<S, T>, params: T) {
      return new Promise((resolve, reject) => {
        updateSystemParamInfo<T>(params)
          .then((res: AxiosResponse) => {
            resolve(res.data)
          })
          .catch((err: AxiosResponse) => {
            reject(err)
          })
      })
    },
    // 删除参数
    DeleteSystemParamInfo<S, T>(_: ActionContext<S, T>, params: T) {
      return new Promise((resolve, reject) => {
        deleteSystemParamInfo<T>(params)
          .then((res: AxiosResponse) => {
            resolve(res.data)
          })
          .catch((err: AxiosResponse) => {
            reject(err)
          })
      })
    }
  }
}

export default systemParam
